package com.bsg.upm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.bsg.upm.entity.SubServSoftwareImageEntity;

/**
 * 子服务软件镜像定义接口
 * 
 * @author HCK
 *
 */
public interface SubServSoftwareImageDao extends CrudDao<SubServSoftwareImageEntity> {

	/**
	 * 获取子服务软件镜像版本
	 * 
	 * @param siteId
	 *            站点编码
	 * @param definitionSubServName
	 *            子服务定义名
	 * @param enabled
	 *            可用
	 * @return 软件镜像集合
	 */
	List<SubServSoftwareImageEntity> listSubServSoftwareImageVersion(@Param("siteId") String siteId,
			@Param("definitionSubServName") String definitionSubServName, @Param("enabled") Boolean enabled);

	/**
	 * 获取指定关联编码的软件镜像
	 * 
	 * @param relateId
	 *            关联编码
	 * @return 软件镜像
	 */
	SubServSoftwareImageEntity getByRelateId(String relateId);

//	/**
//	 * 获取指定条件的软件镜像
//	 * 
//	 * @param siteId
//	 *            站点编码
//	 * @param definitionSubServName
//	 *            子服务定义名
//	 * @param majorVersion
//	 *            主版本
//	 * @param minorVersion
//	 *            次版本
//	 * @param patchVersion
//	 *            修订版本
//	 * @param buildVersion
//	 *            编译版本
//	 * @return 软件镜像
//	 */
//	SubServSoftwareImageEntity getBySiteIdAndDfSubServNameAndVersion(@Param("siteId") String siteId,
//			@Param("definitionSubServName") String definitionSubServName, @Param("majorVersion") Integer majorVersion,
//			@Param("minorVersion") Integer minorVersion, @Param("patchVersion") Integer patchVersion,
//			@Param("buildVersion") Integer buildVersion);

	/**
	 * 获取指定站点、子服务软件定义编码、修订版本号和编译版本的镜像数量
	 * 
	 * @param siteId
	 *            站点编码
	 * @param definitionSubServSoftwareId
	 *            子服务软件定义编码
	 * @param pathVersion
	 *            修订版本号
	 * @param buildVersion
	 *            编译版本号
	 * @return 镜像数量
	 */
	int countImage(@Param("siteId") String siteId,
			@Param("definitionSubServSoftwareId") String definitionSubServSoftwareId,
			@Param("patchVersion") Integer patchVersion, @Param("buildVersion") Integer buildVersion);

	/**
	 * 更新软件镜像关联编码
	 * 
	 * @param subServSoftwareImage
	 *            软件镜像对象
	 * @return 更新数据条数
	 */
	int updateRelateId(SubServSoftwareImageEntity subServSoftwareImage);

	/**
	 * 更新软件镜像可用状态
	 * 
	 * @param subServSoftwareImage
	 *            软件镜像对象
	 * @return 更新数据条数
	 */
	int updateEnabled(SubServSoftwareImageEntity subServSoftwareImage);
}
